Synchronizing Content Progress

ABSTRACT

Systems, apparatuses, and methods are described for managing and synchronizing viewing progress of a content item by multiple users. In one implementation, a user returning to a joint viewing session may be presented with options for catching up to other users in the joint viewing session, or otherwise see what the returning user previously missed.

CROSS REFERENCE FOR RELATED APPLICATIONS

This patent is a continuation of U.S. application Ser. No. 16/673,155,titled “Synchronizing Content Progress” and filed on Nov. 4, 2019. U.S.application Ser. No. 16/673,155 is hereby incorporated herein byreference in its entirety.

BACKGROUND

Today's consumer enjoys a wealth of content available for consumption.Movies, television and streaming programs, Internet audio and/or videoprograms, and the like are all available, and their delivery requirescomputational and storage resources. Improving the efficiency with whichthose resources are used remains an ever-present goal of contentdelivery networks.

SUMMARY

The following summary presents a simplified summary of certain features.The summary is not an extensive overview and is not intended to identifykey or critical elements.

Systems, apparatuses, and methods are described for helping to managecontent consumption by multiple users in a system, such as multiplefamily members who may be watching together or in separate remotelocations. Features herein may assist with synchronizing contentprogress of multiple users in a same content item (e.g., progress madeas different users watch a television program series, movie, etc.). Thesystem may maintain, for a user or group of users, informationindicating that user's individual or relative progress in consumingcontent, such as a user's viewing history of a particular video program.The viewing history of the program may comprise one or more stop markersindicating where in the program the user stopped consuming the program.The viewing history of the program may comprise one or more resumemarkers indicating where in the program the user resumed consuming theprogram. If the system determines that a user wants to consume aprogram, the system may compare the user's viewing history of theprogram with those of other users in the same system (e.g., familymembers, housemates, etc.). If the system determines that the user isbehind in viewing the program compared to one or more of the otherusers, the system may provide one or more options for the user to catchup with the other user(s). If the system determines that the user isabout to pass another user's farthest viewing progress point, the systemmay generate a warning and provide an option to stop viewing the programat the other user's farthest viewing progress point. As such, the systemmay synchronize viewing progress of multiple users, and help to minimizeduplicative streaming of the same content, thereby conservingtransmission resources.

These and other features and advantages are described in greater detailbelow.

BRIEF DESCRIPTION OF THE DRAWINGS

Some features are shown by way of example, and not by limitation, in theaccompanying drawings. In the drawings, like numerals reference similarelements.

FIG. 1 shows an example communication network.

FIG. 2 shows hardware elements of a computing device.

FIG. 3A through FIG. 3F show catch-up options for a returning user tocatch up with other users.

FIG. 4A through FIG. 4F show examples of markers that may be stored toassist in synchronizing viewing progress between multiple users.

FIGS. 5A and 5B constitute a flow chart showing an example method forproviding options for a returning user to catch up with other users andsynchronizing viewing progress between multiple users.

DETAILED DESCRIPTION

The accompanying drawings show examples of the disclosure. It is to beunderstood that the examples shown in the drawings and/or discussedherein are non-exclusive and that there are other examples of how thedisclosure may be practiced.

FIG. 1 shows an example communication network 100 in which featuresdescribed herein may be implemented. The communication network 100 maycomprise one or more information distribution networks of any type, suchas, without limitation, a telephone network, a wireless network (e.g.,an LTE network, a 5G network, a WiFi IEEE 802.11 network, a WiMAXnetwork, a satellite network, and/or any other network for wirelesscommunication), an optical fiber network, a coaxial cable network,and/or a hybrid fiber/coax distribution network. The communicationnetwork 100 may use a series of interconnected communication links 101(e.g., coaxial cables, optical fibers, wireless links, etc.) to connectmultiple premises 102 (e.g., businesses, homes, consumer dwellings,train stations, airports, etc.) to a local office 103 (e.g., a headend).The local office 103 may send downstream information signals and receiveupstream information signals via the communication links 101. Each ofthe premises 102 may comprise devices, described below, to receive,send, and/or otherwise process those signals and information containedtherein.

The communication links 101 may originate from the local office 103 andmay comprise components not illustrated, such as splitters, filters,amplifiers, etc., to help convey signals clearly. The communicationlinks 101 may be coupled to one or more wireless access points 127configured to communicate with one or more mobile devices 125 via one ormore wireless networks. The mobile devices 125 may comprise smartphones, tablets or laptop computers with wireless transceivers, tabletsor laptop computers communicatively coupled to other devices withwireless transceivers, and/or any other type of device configured tocommunicate via a wireless network.

The local office 103 may comprise an interface 104, such as atermination system (TS). The interface 104 may comprise a cable modemtermination system (CMTS) and/or other computing device(s) configured tosend information downstream to, and to receive information upstreamfrom, devices communicating with the local office 103 via thecommunications links 101. The interface 104 may be configured managecommunications among those devices, to manage communications betweenthose devices and backend devices such as servers 105-107, and/or tomanage communications between those devices and one or more externalnetworks 109. The local office 103 may comprise one or more networkinterfaces 108 that comprise circuitry needed to communicate via theexternal networks 109. The external networks 109 may comprise networksof Internet devices, telephone networks, wireless networks, fiber opticnetworks, and/or any other desired network. The local office 103 mayalso or alternatively communicate with the mobile devices 125 via theinterface 108 and one or more of the external networks 109, e.g., viaone or more of the wireless access points 127.

The push notification server 105 may be configured to generate pushnotifications to deliver information to devices in the premises 102and/or to the mobile devices 125. The content server 106 may beconfigured to provide content to devices in the premises 102 and/or tothe mobile devices 125. This content may comprise, for example, video,audio, text, web pages, images, files, etc. Video content may compriseinformation displayed (or displayable) to a user in the form of one ormore images. Video content may have associated audio content, e.g.,information presented (or presentable) to a user in audio form. Videocontent may be communicated or stored in the form of data. Video contentdata providing a digital representation of a particular video contentmay be created using any of various encoding types. Such encoding typesinclude, but are not limited to, compression according to a MotionPicture Experts Group (MPEG) standard (e.g., MPEG-2), compressionaccording to the ITU-T H.264 (ISO/IEC MPEG-4) advanced video coding(AVC) standard, High Efficiency Video Coding (HEVC) standard (e.g.,H.265 and MPEG-H Part 2), etc.

MPEG-2, AVC, or HEVC encoding may use motion vector-based compression toefficiently represent the stream of image frames. Using thiscompression, each frame is categorized as either an independent frame ora dependent frame. Independent frames are represented in the stream bydata that is sufficient to generate the frame's complete image withoutknowledge about neighboring frames in the stream, similar to how a stillimage picture may be represented. Dependent frames may be represented bydata that refers to, or depends on, another frame (e.g. a precedingframe, a subsequent frame, etc.). The first frame after a scene changeis typically represented using an independent frame. In the MPEG-2, AVC,or HEVC standard, independent frames are referred to as Intra-codedpicture frames (I-frames), while dependent frames are referred to aseither Predicted picture frames (P-frames), or a Bi-directionalpredicted picture frames (B-frames). A P-frame is dependent on a priorframe in the stream, while a B-frame is dependent on both a prior and asubsequent frame in the stream.

The content server 106 (or, alternatively, an authentication server) maycomprise software to validate user identities and entitlements, tolocate and retrieve requested content (e.g., movies, video programseries, etc.), and/or to initiate delivery (e.g., streaming) of thecontent. The application server 107 may be configured to offer anydesired service. For example, an application server may be responsiblefor collecting, and generating a download of, information for electronicprogram guide listings. Another application server may be responsiblefor monitoring user viewing habits and collecting information from thatmonitoring for use in selecting advertisements. Yet another applicationserver may be responsible for formatting and inserting advertisements ina video stream being transmitted to devices in the premises 102 and/orto the mobile devices 125. Although shown separately, the push server105, the content server 106, the application server 107, and/or otherserver(s) may be combined. The servers 105, 106, 107, and/or otherservers, may be computing devices and may comprise memory storing dataand also storing computer executable instructions that, when executed byone or more processors, cause the server(s) to perform steps describedherein. The content delivery system may comprise one or more of the pushserver 105, the content server 106, the application server 107, and/orother server(s). The content delivery system may track the viewinghistories of multiple users and synchronize viewing progresses of themultiple users in a same content item (which will be discussed below).

An example premises 102 a may comprise an interface 120. The interface120 may comprise circuitry used to communicate via the communicationlinks 101. The interface 120 may comprise a modem 110, which maycomprise transmitters and receivers used to communicate via thecommunication links 101 with the local office 103. The modem 110 maycomprise, for example, a coaxial cable modem (for coaxial cable lines ofthe communication links 101), a fiber interface node (for fiber opticlines of the communication links 101), twisted-pair telephone modem, awireless transceiver, and/or any other desired modem device. One modemis shown in FIG. 1, but a plurality of modems operating in parallel maybe implemented within the interface 120. The interface 120 may comprisea gateway 111. The modem 110 may be connected to, or be a part of, thegateway 111. The gateway 111 may be a computing device that communicateswith the modem(s) 110 to allow one or more other devices in the premises102 a to communicate with the local office 103 and/or with other devicesbeyond the local office 103 (e.g., via the local office 103 and theexternal network(s) 109). The gateway 111 may comprise a set-top box(STB), digital video recorder (DVR), a digital transport adapter (DTA),a computer server, and/or any other desired computing device.

The gateway 111 may also comprise one or more local network interfacesto communicate, via one or more local networks, with devices in thepremises 102 a. Such devices may comprise, e.g., display devices 112(e.g., televisions (TVs)), STBs or DVRs 113, personal computers 114,laptop computers 115, wireless devices 116 (e.g., wireless routers,wireless laptops, notebooks, tablets and netbooks, cordless phones(e.g., Digital Enhanced Cordless Telephone—DECT phones), mobile phones,mobile televisions, personal digital assistants (PDA)), landline phones117 (e.g. Voice over Internet Protocol—VoIP phones), and any otherdesired devices. Example types of local networks comprise MultimediaOver Coax Alliance (MoCA) networks, Ethernet networks, networkscommunicating via Universal Serial Bus (USB) interfaces, wirelessnetworks (e.g., IEEE 802.11, IEEE 802.15, Bluetooth), networkscommunicating via in-premises power lines, and others. The linesconnecting the interface 120 with the other devices in the premises 102a may represent wired or wireless connections, as may be appropriate forthe type of local network used. One or more of the devices at thepremises 102 a may be configured to provide wireless communicationschannels (e.g., IEEE 802.11 channels) to communicate with one or more ofthe mobile devices 125, which may be on- or off-premises.

The mobile devices 125, one or more of the devices in the premises 102a, and/or other devices (e.g., smart watches) may receive, store,output, and/or otherwise use assets. An asset may comprise a video, agame, one or more images, software, audio, text, webpage(s), and/orother content.

One or more presence tracking systems may be separate from the mobiledevices 125, one or more of the devices in the premises 102 a, and/orthe other devices described above. Alternatively or in addition, one ormore of the mobile devices 125, one or more of the devices in thepremises 102 a, and/or the other devices described above may compriseone or more presence tracking systems (e.g., facial recognition systems,voice recognition systems, biometrics, or any other systems) that maydetect that a human (e.g., a user) is present in front of (e.g., in thevicinity of) a corresponding device. The corresponding device may senddata indicating presence of the user. For example, the display device112 may comprise a facial recognition system. The facial recognitionsystem may comprise a camera capturing a facial image of a user, and maycompare facial features of the captured facial image to known facialfeatures pre-stored in a database. If a match is determined, the facialrecognition system may identify the user. If the facial recognitionsystem identifies the user, the facial recognition system may determinethat the user is present. The facial recognition system may sendpresence data indicating that the user is present in front of thedisplay device 112 to the content delivery system via the wired orwireless connections.

The set top box/DVR 113 may comprise a voice recognition system. Thevoice recognition system may comprise a microphone detecting a humansound, and may identify a user by comparing sound characteristics (e.g.,sound intensity, sound peak, sound frequency, sound duration, and/orother sound characteristics) of the detected human sound to known soundcharacteristics pre-stored in a database. If a match is determined, thevoice recognition system may identify the user. If the voice recognitionsystem identifies the user, the voice recognition system may determinethat the user is present. The voice recognition system may send presencedata indicating that the user is present in front of the set top box/DVR113 to the content delivery system via the wired or wirelessconnections.

The mobile device 125 may comprise a biometrics system to detectpresence of an authorized user. The biometrics system may capture auser's fingerprint via a touch screen of the mobile devices 125, and maycompare patterns of the captured fingerprint with patterns of knownfingerprints pre-stored in a database. If a match is determined, thebiometrics system may identify the authorized user, and the mobiledevice 125 may be unlocked. If the biometrics system identifies theuser, the biometrics system may determine that the authorized user ispresent. The biometrics system may send presence data indicating thatthe authorized user is present in front of the mobile device 125 to thecontent delivery system via the wired or wireless connections.

One or more of the devices in the premises 102 a described above maydetermine presence of a user based on connections with the mobile device125 (and/or smart watches) associated with the user. For example, thepersonal computer 114 may periodically (e.g., every 5 seconds) scan forsignals from a user's mobile device (and/or signals from the user'ssmart watch). If the personal computer 114 detects signals from theuser's mobile device (and/or signals from the user's smart watch), thepersonal computer 114 may further determine, based on parameters (e.g.,strength, direction, etc.) of the detected signals, a position of theuser's mobile device (and/or the user's smart watch) relative to thepersonal computer 114. The personal computer 114 may determine that theuser is present in front of the personal computer 114 if the user'smobile device (and/or the user's smart watch) is located within apredetermined distance (e.g., 1 meter) from the personal computer 114.The personal computer 114 may send presence data indicating that theuser is present in front of the personal computer 114 to the contentdelivery system via the wired or wireless connections.

FIG. 2 shows hardware elements of a computing device 200 that may beused to implement any of the computing devices shown in FIG. 1 (e.g.,the mobile devices 125, any of the devices shown in the premises 102 a,any of the devices shown in the local office 103, any of the wirelessaccess points 127, any devices with the external network 109) and anyother computing devices discussed herein. The computing device 200 maycomprise one or more processors 201, which may execute instructions of acomputer program to perform any of the functions described herein. Theinstructions may be stored in a read-only memory (ROM) 202, randomaccess memory (RAM) 203, removable media 204 (e.g., a USB drive, acompact disk (CD), a digital versatile disk (DVD)), and/or in any othertype of computer-readable medium or memory. Instructions may also bestored in an attached (or internal) hard drive 205 or other types ofstorage media. The computing device 200 may comprise one or more outputdevices, such as a display device 206 (e.g., an external televisionand/or other external or internal display device) and a speaker 214, andmay comprise one or more output device controllers 207, such as a videoprocessor. One or more user input devices 208 may comprise a remotecontrol, a keyboard, a mouse, a touch screen (which may be integratedwith the display device 206), a microphone, a camera, etc. The computingdevice 200 may also comprise one or more network interfaces, such as anetwork input/output (I/O) interface 210 (e.g., a network card) tocommunicate with an external network 209. The network I/O interface 210may be a wired interface (e.g., electrical, RF (via coax), optical (viafiber)), a wireless interface, or a combination of the two. The networkI/O interface 210 may comprise a modem configured to communicate via theexternal network 209. The external network 209 may comprise thecommunication links 101 discussed above, the external network 109, anin-home network, a network provider's wireless, coaxial, fiber, orhybrid fiber/coaxial distribution system (e.g., a DOCSIS network), orany other desired network. The communication device 200 may comprise alocation-detecting device, such as a global positioning system (GPS)microprocessor 211, which may be configured to receive and processglobal positioning signals and determine, with possible assistance froman external server and antenna, a geographic position of thecommunication device 200.

Although FIG. 2 shows an example hardware configuration, one or more ofthe elements of the computing device 200 may be implemented as softwareor a combination of hardware and software. Modifications may be made toadd, remove, combine, divide, etc. components of the computing device200. Additionally, the elements shown in FIG. 2 may be implemented usingbasic computing devices and components that have been configured toperform operations such as are described herein. For example, a memoryof the computing device 200 may store computer-executable instructionsthat, when executed by the processor 201 and/or one or more otherprocessors of the computing device 200, cause the computing device 200to perform one, some, or all of the operations described herein. Suchmemory and processor(s) may also or alternatively be implemented throughone or more Integrated Circuits (ICs). An IC may be, for example, amicroprocessor that accesses programming instructions or other datastored in a ROM and/or hardwired into the IC. For example, an IC maycomprise an Application Specific Integrated Circuit (ASIC) having gatesand/or other logic dedicated to the calculations and other operationsdescribed herein. An IC may perform some operations based on executionof programming instructions read from ROM or RAM, with other operationshardwired into gates or other logic. Further, an IC may be configured tooutput image data to a display buffer.

Multiple users may start consuming a same content item by using a samerendering device. For example, multiple users may start watching a videoprogram together on a display device located in a room. During the videoprogram, while other users are still watching the video program, one ofthe multiple users may leave the room and stop watching the videoprogram for a time period (e.g., a restroom break). After the timeperiod, the user may return to the room and continue to watch the videoprogram with the other users. The returning user may want to watchscene(s), of the video program, that the returning user missed duringthe user's absence, and may want to catch up with the other users. FIG.3A through FIG. 3F show an example where the content delivery system(hereafter “the system”) determines what a user missed in the videoprogram during the user's absence, and provides options for the user tocatch up with other users.

FIG. 3A shows that multiple users (e.g., User A, User B, and User C)start watching a video program (e.g., a movie, an Internet streamingprogram, a television program, etc.) together on a display screen of adisplay device 300 (e.g., a television, a monitor, etc.). The multipleusers and the display device 300 may reside in a same physical location(e.g., in a same room, be housemates or roommates, family members,etc.). The video program may comprise a series of scenes (e.g., scene 1,scene 2, . . . scene N) arranged in a sequence. One or more presencetracking systems may track the presence of the User A, the User B, andthe User C, and may send presence data indicating presence of the UserA, the User B, and the User C to the system. For example, if the User A,the User B, and the User C start watching the video program in front ofthe display device 300, the presence tracking systems associated withthe display device 300 may determine that the User A, the User B, andthe User C are present in front of the display device 300, and thepresence tracking systems may send presence data indicating that theUser A, the User B, and the User C are present in front of the displaydevice 300. The system may receive a program request for the videoprogram. Based on the received presence data and the program request,the system may determine that the User A, the User B, and the User C arepresent in front of the display device 300 and start watching the videoprogram together. As shown in FIG. 3A, the system may determine that theUser A, the User B, and the User C start watching the video programtogether on the display screen of the display device 300 from the scene1.

FIG. 3B shows that the User C leaves the room and stops watching thevideo program, while the User A and the User B are still watching thevideo program. For example, the User C may leave the room to answer atelephone call. If the User C leaves the room, one or more presencetracking systems associated with the display device 300 may sendpresence data indicating that the User A and the User B are present, andthe User C is absent. The system may determine that at the time the UserC leaves the room, the User C stops watching the video program. Thesystem may generate a stop marker indicating a point, in the videoprogram, that the User C has stopped watching. The stop marker maycomprise data indicating a position, a time, or a location, in thestream of the video program, indicating when a user (e.g., the User C)has stopped watching the video program. The stop marker may be stored ina local or remote database that is accessible by the system. Forexample, the system may determine that the User C left the room at thebeginning of the scene 2, and may generate a stop marker, for the UserC, pointing to the beginning of the scene 2. As shown in FIG. 3B, theUser C leaves the room at the beginning of the scene 2, and the User Aand the User B continue to watch the scene 2.

FIG. 3C shows that after the User C returns to the room, the system mayprovide one or more catch-up options for the User C to choose to catchup with the User A and the User B. At the time the User C returns to theroom in the FIG. 3C example, the User A and the User B have viewed theentire scene 2 and start watching the scene 3. The system may receivepresence data indicating that the User C is now present in front of thedisplay device 300. Compared to the previously received presence datawhich indicated that the User C was absent, the system may now determinethat the User C has returned to the room to resume watching the videoprogram. Based on the time point at which the User C returns to the roomand other users' current viewing progress points of the video program,the system may generate a resume marker, for the User C, to indicatewhere in the stream of the video program the user C resumes watching thevideo program. The resume marker may comprise data indicating aposition, a time, or a location, in the stream of the video program,indicating where a user (e.g., the User C) has resumed watching thevideo program. The resume marker may be stored in a database that isaccessible by the system. For example, the system may determine that theUser C comes back at 9:40 PM; and at 9:40 PM, the User A and the User Bstart to watch the scene 3. The system may determine that the resumemarker, for the User C, points to the beginning of the scene 3. Thesystem may determine that the gap between the stop marker and the resumemarker is the entire scene 2, and may determine that the User C missedthe entire scene 2 during the User C's absence. The system may send dataindicating that the User C missed the entire scene 2 to a deviceassociated with the User C (e.g., the User C's mobile device 310). Basedon the received data, the User C's mobile device 310 may display amessage (e.g., “User C Missed Scene 2!!”) on a touch screen 320 of themobile device 310. The User C's mobile device 310 may display one ormore of catch-up options for the User C to choose to catch up with theUser A and the User B.

As shown in FIG. 3C, the User C's mobile device 310 may display threecatch-up options: (1) rewinding the video program, on the display screenof the display device 300, to the beginning of what the user C missed(e.g., the mobile device may display—“Let's rewind and we'll all watchfrom Scene 2 on the display”); (2) splitting the display screen of thedisplay device 300 and providing a synopsis of what the User C missed(e.g., the mobile device may display—“Split the display screen andprovide a synopsis of what User C Missed”); and (3) sending the scene 2to a device associated with the user C (e.g., the mobile device maydisplay—“Send Scene 2 to User C's mobile device.”). The User C mayselect one of these options. For example, the User C may click on one ofthese options on the touch screen 320 of the User C's mobile device 310.The system may receive data indicating the user's selection.

FIG. 3D shows a situation where the User C selects the above option (1).If the User C selects option (1), the system may cause the displaydevice 300 to rewind the video program to the beginning of the scene 2.The display device 300 may display the video program from the beginningof the scene 2. The User A and the User B may watch the scene 2 one moretime with the user C. The display device 300 may retrieve a copy of thescene 2 saved in a local memory (e.g., a display buffer) of the displaydevice 300 and render the local copy of the scene 2 one more time,thereby saving bandwidth by eliminating needs of retrieving the scene 2from a remote content source.

FIG. 3E shows a situation where the User C selects the above option (2).If the User C selects option (2), the system may cause the displaydevice 300 to split the display screen into a sub-screen (1) 330 and asub-screen (2) 340. The display device 300 may display the scene 3 onthe sub-screen (1) 330, and may display a synopsis of the scene 2 orhighlighted parts of the scene 2 on the sub-screen (2) 340. The synopsisof the scene 2 may comprise one or more of text summary of the scene 2,a number of video frames that represent summary of the contentassociated with the scene 2, and/or other information summarizing thescene 2. The system may retrieve data indicating the synopsis of thescene 2 from metadata embedded in the stream of the video program. Thehighlighted parts of the scene 2 may comprise video clips (with audiocontent disabled) of the scene 2 that interested the User A and/or UserB. For example, when the User A and the User B were watching the scene 2during the User C's absence, at least one of the User A and the user Bmay have cheered when watching these video clips. The facial recognitionsystems and/or the voice recognition systems previously discussed maydetect cheers, may send data (e.g., time periods during which the cheersoccur) associated with the cheers to the system, and the system maydetermine, based on the data associated with the cheers, video clipsassociated with the cheers. The system may tag these video clips ashighlighted portions of the scene 2. As such, the User C may watch thescene 2 (what the User C has missed during the User C's absence) on thesub-screen (2) 340, and may watch the scene 3 displayed on thesub-screen (1) 330 together with the User A and the User B.

FIG. 3F shows a situation where the User C selects the above option (3).If the User C selects option (3), the system may send the scene 2 (whatthe User C missed during the User C's absence) to the User C's mobiledevice 310. The User C's mobile device 310 may display the scene 2 onthe screen. The User C may watch the scene 2 on the mobile device 310.As the display device 300 continues to display the video program fromthe scene 3, the User C may also watch the scene 3 on the display device300 with the User A and the User B.

If the User C watches the scene 2 on the User C's mobile device 310, theUser C may perform rewind, pause, fast forward, or any other trick playson the mobile device 310. The system may determine how to execute thetrick plays based on the User C's user profile. The User C's userprofile may comprise the User C's viewing preferences. The User C'sviewing preferences may indicate that the User C prefers fast forwardingthe content at a speed of 5× (e.g., 5 times faster than the scene 2 isusually played). If the User C selects to fast forward the scene 2, thesystem may cause the User C's mobile device 310 to fast forward thescene 2 at speed of 5×.

The system may omit commercial content associated with the scene 2before sending the scene 2 to the User C's mobile device 310 fordisplay. The system may provide an option (e.g., a “Skip Commercial”button displayed on the User C's mobile device 310) to skip thecommercials. The system may send different commercials to the User C'smobile device 310 based on the User C's user profile. For example, thesystem may have previously embedded local car dealership commercials inthe scene 2 when the User A and the User B were watching the scene 2during the User C's absence. When sending the scene 2 to the User C'smobile device 310, the system may embed movie advertisements, instead oflocal car commercials, in the scene 2 based on the User C's user profileindicating movies as one of the User C's habits. The commercials shownduring scene 2 on the mobile device may be different from thecommercials that appeared when scene 2 was initially shown on the maindisplay.

FIG. 4A through FIG. 4F show examples of timelines of progress fordifferent users as they watch a program, and the timelines may comprisemarkers that may be stored to assist in synchronizing viewing progressbetween multiple users. Multiple users may start watching a same videoprogram, but may later have different viewing progresses. The system maytrack and synchronize the viewing progresses of the multiple users.

As shown in FIG. 4A, on DAY 1, multiple users (e.g., User A and User B)may start watching a video program together on the display screen of thedisplay device 300. The video program may include a series of scenes(e.g., scene 1, scene 2, scene 3, scene 4, and scene 5) arranged in asequence. The video program may have a time length from 0 to END, andeach of the scenes may have a respective time length. In this example,the video program is a 150-minute show, and each scene includes 30minutes of content. The video program may be an any time length show,and a scene may include any time length of content. At 9 PM, the User Aand the User B may start watching the video program together from 0(e.g., the beginning of the scene 1). The system may determine that thestart marker of the video program is 0. If the video program starts, thesystem may determine, based on received presence data, that the User Aand User B are present and are watching the video program together. TheUser A and the User B may watch the video program together until 9:30PM. At 9:30 PM, the User A and the User B complete the scene 1.

As shown in FIG. 4B, at 9:30 PM, the User A may leave the room, and theUser B may continue to watch the video program. At the time the User Aleaves the room, the system may timestamp a first stop marker (e.g.,A1), for the User A, indicating that the User A stops watching the videoprogram at A1. For example, the system may determine that the User A haswatched the first 30-minutes (e.g., the scene 1) of the video program,and first stop marker (A1) for the User A is 30 minutes after the startmarker of the video program. During the User A's absence, the User B maycontinue to watch the scene 2 and the scene 3 until 10:30 PM. At 10:30PM, the User B may leave the room and stop watching the video program.After the User B leaves the room, the system may timestamp a first stopmarker (e.g., B1), for the User B indicating that the User B stoppedwatching the video program at B1. For example, the system may determinethat the User B has watched the first 90-minutes (e.g., the scenes 1-3)of the video program, and may determine that the first stop marker (B1)for the User B is 90 minutes after the start marker of the videoprogram. The system may determine that the User A's farthest viewingprogress point of the video program is A1, and that the User B'sfarthest viewing progress point of the video program is B1.

As shown in FIG. 4C, on DAY 2, only the User A comes back and continuesto watch the video program. The system may determine that the User A ispresent but the User B is absent (e.g., missing). The system may providean option on the display screen of the display device 300 and ask theUser A whether to continue to watch the video program. The system maycause the display device 300 to display viewing progress of the User Aand the User B. For example, the display screen may display a textmessage—“Welcome Back! Do you want to resume where you left off? You arebehind the user B for scene 2 and scene 3.” The system may provide anoption for the User A to select to catch up with the User B. Forexample, the system may cause the display device 300 to display a “CatchUp” button on the display screen of the display device 300. If the UserA clicks on the “Catch Up” button, the system may cause the displaydevice 300 to resume displaying the video program on the display screenfrom A1 to B1. If the User A does not click on the “Catch Up” button,the system may cause the display device to display one or more ofcontent of the last tuned channel, a program guide, etc. on the displayscreen of the display device 300.

The User A may click on the “Catch up” button. As shown in FIG. 4D, thedisplay device 300 may resume displaying the video program from thebeginning of the scene 2 until the User A's current viewing progresspoint reaches B1 (e.g., the end of the scene 3). As such, the User A maycontinue to watch the video program from where the User A left (e.g.,A1) to where the User B left (e.g., B1).

As shown in FIG. 4E, if the User A's current viewing progress pointreaches B1, the system may cause the display device 300 to display awarning that the User A is about to pass the User B's farthest viewingprogress point. The warning may be displayed at a corner of the displayscreen of the display device 300 so that most part of the scenedisplayed on the display screen of the display device 300 is not blockedby the warning. The warning may be displayed at any portion of thedisplay screen of the display device 300. For example, the displayscreen of the display device 300 may display a warning message—“Warning:About to pass User B.” The User A may be informed by such a warning thatthe User A is about to pass where the User B has stopped. After the UserA sees the warning message, the User A may either do nothing andcontinue to watch the video program beyond the User's last stop marker(B1), or stop the video program.

In addition to causing display of the warning message, the system maycause the display device 300 to display an option to stop the videoprogram at B1. For example, the display screen of the display device 300may display the warning message—“Warning: About to pass User B,” and mayalso display an option—“Press ‘ok’ on remote if you want to stop.Otherwise, the show will continue in 10 seconds.” If the User A pressesthe “ok” button on the remote, and the display device 300 may stopdisplaying the video program. If the User A does not press the “ok”button, the display device 300 may automatically continue to display thevideo program after 10 seconds. In this example, the User A may pressthe “ok” button on the remote, and stops where the User B has stopped.

As shown in the timeline of FIG. 4E, if the User A stops at where theUser B has stopped, the system may timestamp a second stop marker (A2)for the User A. The second stop marker (A2) may be identical to thefirst stop marker (B1) for the User B. The system may determine that, ofall the markers (e.g., A1 and A2), A2 is the farthest stop markerassociated with the stream of the video program, and may determine thatA2 is the farthest viewing progress point of the User A. The system maydetermine that the user B's farthest viewing progress point of the videoprogram remains same as B1. After the display device 300 stopsdisplaying the video program, the User A may stop watching the videoprogram and leave the room.

As shown in FIG. 4F, on DAY 3, both of the User A and the User B maycome back and may continue to watch the video program together. Thesystem may determine that both of the User A and the User B are presentin front of the display device 300. The system may cause the displaydevice 300 to display a list of programs for the User A and the User Bto select. For each of the programs in the list, the User A and the UserB have not completed the program and have same viewing progress. If theUser A and the User B choose to continue to watch the program indicatedin FIGS. 4A-4E, the system may retrieve the farthest stop marker (e.g.,A2) for the User A and the farthest stop marker (e.g., B1) for the UserB (where A2 is identical to B1). The system may send the stream of thevideo program, beginning from B1 (A2), to the display device 300 fordisplay. The system need not send the video program before B1 (A2)because both of the User A and the User B have viewed the video programbefore B1 (A2). Omitting to send the video program before B1 (A2) maysave bandwidth for content delivery. In some cases, the system may sendthe entire video program to the display device 300 but cause the displaydevice 300 to resume displaying the video program from B1 (A2). In thesecases, the users may be able to rewind the video program to anywherethey want. As shown in FIG. 4G, the User A and the User B may continueto watch the video program together from B1 (A2) to the end of the videoprogram (e.g., END).

A user may consume different parts of a video program on different typesof rendering (e.g., displaying or playing) devices, respectively. Thesystem may provide different formats for the different parts of thevideo program according to different types of rendering devices,respectively. In these cases, the system may implement adaptive bitratestreaming (ABR) wherein a video file may be encoded using MPEG-2, andmay provide multiple resolution versions (e.g., versions encoded at1080p resolution and at 4k resolution) for the video program. Forexample, a user may start watching a video program on display device D1located in Room 1. The system may determine that the user starts viewingthe video program on the display device D1 in Room 1. The system maydetermine that the display device D1 has a 1080p screen based on anidentifier (e.g., a serial number) of the display device D1. The systemmay send a version of video content of the video program encoded at1080p resolution to the display device D1 for display. In the middle ofthe video program, the user may leave Room 1 and enter Room 2. Thesystem may timestamp a first stop marker (M1) to indicate that the userstops watching the video program at M1. After the user enters Room 2 andturns on a display device D2 in the Room 2, the system may determinethat the user is present in front of the display device D2. When thedisplay device D2 is turned on, the system may cause the display deviceD2 to display an option to continue to watch the video program on thedisplay device D2. The user may enter a selection, by using a remote ofthe display device D2, to continue to watch the video program on displaydevice D2. Based on the user selection, the system may retrieve thefirst stop marker (M1), and may continue to display the video programfrom M1 on the display device D2. The system may determine that thedisplay device D2 has a 4k screen based on an identifier of the displaydevice D2. The system may send a version of the video content of thevideo program encoded at 4k resolution to the display device D2 fordisplay. Similarly, the system may provide different versions for audiocontent of the video program, and may send the respective versions ofthe audio content to the display device D1 and the display device D2that match the respective audio setups of the display device D1 and thedisplay device D2.

In some cases, if the system determines that a rendering device does nothave the capability to render the video content of the video program,but does have the capability to render the audio content of the videoprogram, the system may send an audio only version (e.g., a versionwhere only the audio content of the video program is provided, or aversion where the video content of the video program is disabled) of thevideo program to the rendering device. For example, a vehicle renderingdevice installed on a vehicle may have an audio output device but doesnot have a video output device. The system may determine, based on anidentifier of the vehicle rendering device, that the vehicle renderingdevice is unable to render the video content of the video program but isable to render the audio content of the video program. The system maythen send the audio only version of the video program to the vehiclerendering device for play. By doing so, the system may save bandwidthfor content delivery by avoiding to send content that the renderingdevice is unable to render.

The system may automatically activate a rendering device located in apredetermined proximity to the user, and may cause the device todisplay/play the video program. For example, the user may haveregistered one or more rendering devices (e.g., the display device D1,the display device D2, a display device integrated to a refrigerator, adisplay device installed on the user's vehicle (e.g., the user's car),an audio system installed on the user's vehicle, or any other devicesthat may display/play video/audio content of the video program) with thesystem. The user may start watching the video program on the displaydevice D1. When the display device D1 is turned on, the display deviceD1 may display a “Follow Me” button on the screen of the display deviceD1. If the user clicks on the “Follow Me” button, the “Follow Me”function may be activated. With the “Follow Me” function beingactivated, the system may automatically, without any user input,activate one or more of the registered rendering devices if the user iswithin a threshold distance from the one or more of the registeredrendering devices. For example, the user may click on the “Follow Me”button on the display device D1. After the user watches a part of thevideo program on the display device D1, the user may leave the Room 1.The user may enter the Room 2 and may sit on a sofa that is locatedwithin 2 meters from the display device D2 that is in a sleep mode. Oneor more presence tracking systems in the Room 2 may detect that the useris within 2 meters from the display device D2, and may send, to thesystem, data indicating that the user is within 2 meters from thedisplay device D2. Based on the data indicating that the user is within2 meters from the display device D2, the system may send wake-up signalsto the display device D2 and activate the screen of the display deviceD2, and the system may send the stream of the video program, from thefirst stop marker (M1), to the display device D2 for display. Thethreshold distance may vary according to different types of theregistered devices. For example, the threshold distance for the displaydevice integrated in the user's vehicle may be 0.3 meter.

The user may later leave Room 2 and enter the user's vehicle. The systemmay timestamp a second stop marker (M2) indicating that the user stopswatching the video program at M2. Compare to M1, M2 points to a laterpoint in the stream of the video program. The user's mobile device mayconnect to the vehicle via a wireless or wired connection. The user'smobile device may receive vehicle data, from the vehicle, indicating thevehicle identification, information of display devices installed on thevehicle, information of audio systems installed on the vehicle, etc. Theuser's mobile device may send the vehicle data to the system. Based onthe received vehicle data, the system may determine that the user ispresent in the vehicle. The mobile device may detect (e.g., by using acamera) a relative physical location of the user within the vehicle, andmay send data indicating the relative physical location of the userwithin the vehicle to the system.

The system may deliver the video program, from the second stop markerM2, to one or more of the user's mobile device or rendering devicesinstalled in the vehicle in a vehicle mode. The vehicle mode maycomprise (1) an audio only mode (e.g., a mode where only audio contentof the video program is provided, or a mode where the video content ofthe video program is disabled), or (2) a video and audio mode (e.g., amode where both of the audio content and the video content are providedand/or enabled). The system may determine the vehicle mode based on thephysical location of the user within the vehicle. For example, if thesystem determines that the user sits on a rear seat (e.g., the user isnot the driver), the system may send the stream of the video program,from M2, in the video and audio mode, to one or more of the user'smobile device or the rendering devices associated with the rear seat fordisplay/play. Alternatively, if the system detects that the user sits onthe driver seat of the vehicle (e.g., the user is the driver), thesystem may deliver the stream of the video program, from M2, to theuser's mobile device or the rendering devices associated with the driverseat for display/play in the audio only mode. If the system delivers thestream of the video program in the audio only mode, the driver is unableto watch the video of the video program (because video content has beendisabled), so distract from the video program to the driver may bedecreased. In some cases, the system may determine, based on the vehicledata, that the vehicle only has an audio system and does not have adisplay device, the system may deliver the stream of the video program,from M2, in the audio only mode regardless where the user is located inthe vehicle. In some cases, the user's mobile device may display one ormore audio only options for the user to choose. The audio only optionsmay comprise one or more of Alt audio portion radio, audio only,visually disabled feed, or second audio program (SAP).

In some cases, the user (e.g., a driver) may exit and return to the carmultiple times when the user is listening the audio content of the videoprogram via the audio system of the car. The user may turn off the audiosystem of the car when the user exits the car. The connection betweenthe audio system and the user's mobile device may be disconnected. Thesystem may generate a stop marker associated with the stream of thevideo program each time the connection is disconnected. The user mayturn the audio system back on when the user returns to the car, and theaudio system of the car may reconnect to the user's mobile device. Ifthe audio system of the car reconnects to the user's mobile device, thesystem may continue to send the video program, from the farthest stopmarker associated with the stream of the video program, in audio onlymode to the audio system of the car for play. If the user returns to theRoom 1 from the car, the system may send both of the video content ofthe video program and the audio content of the video program to thedisplay device D1.

In some cases, even though the system detects that the user sits on thedriver seat, the system may receive sensor data indicating that thevehicle is not in a driving operation mode. For example, the user maypark the vehicle in a parking lot. Vehicle sensors may sense that thespeed and acceleration of the vehicle are zero and the braking of thevehicle is activated. The vehicle sensors may generate sensor dataindicating that the speed and acceleration of the vehicle are zero andthe braking of the vehicle is activated. The vehicle sensors may sendthe sensor data to the system via the user's mobile device. The systemmay determine, based on the received sensor data, that the vehicle isnot in the driving operation mode. After determining the vehicle is notin the driving operation mode, the system may re-enable the videocontent and send the video program in the video and audio mode to one ormore of the user's mobile device or the rendering devices installed inthe vehicle for display/play.

The system may synchronize the viewing progresses of multiple users(e.g., a User J and a User P) who want to watch a video program togethereven if the multiple users watch the video program on different devices,respectively. The User J and the User P may start watching a videoprogram together on a display device located in a room. After a timeperiod, the User J may leave the room. If the User J leaves the room,the system may timestamp a first stop marker (J1), for the User J, toindicate that the User J stops watching the video program at J1 in thestream of the video program. After the User J leaves the room, the UserP may also leave room. The system may timestamp a first stop marker(P1), for the User P, to indicate the User P has stopped watching thevideo program at P1 in the stream of the video program. P1 may be aheadof J1. While the User P has stopped watching the video program after P1,the User J may continue to watch the video program, from J1, on the UserJ's mobile device. If the User J's current viewing progress pointreaches P1, the User J's mobile device may display a warning indicatingthat the User J is about to watch content, of the video program, whichthe User P has not watched. The mobile device may display options forthe User J to choose whether to stop at P1 or to pass beyond P1. If theUser J chooses to stop at P1, the User J's mobile device may stopdisplaying the video program. In some cases, the system may omitproviding the above options but force the User J's mobile device to stopdisplaying the video program if the User J's current viewing progresspoint reaches P1. Alternatively, if the User J chooses to go beyond P1,the User J's mobile device may continue to display the video programuntil the User J stops again at a second stop marker (J2) or until thevideo program ends. J2 may be ahead of P1. The User P may continue towatch the video program on the User P's mobile device. If the User P'scurrent viewing progress point reaches J2, the User P's mobile devicemay display a similar warning indicating that the User P is about towatch the content that the User J has not watched, and may displayoptions for the User P to choose whether to stop at J2 or to pass beyondJ2.

FIGS. 5A and 5B comprise a flow chart showing an example method forproviding options for a returning user to catch up with other users andsynchronizing viewing progress between multiple users. The method maystart from step 500 where the system may be initialized. The systemdescribed herein, and the steps performed, may be embodied in one ormore computing devices, such as application server 107, content server106, gateway 111, display device 112, set-top box/DVR 113, computers114-115, etc.

At step 502, the system may determine if the system receives a requestto register a user. If the system receives such a request, the methodmay proceed to step 504. At step 504, the system may open or update anaccount according to the request. For example, one or more of multipleusers associated with the premises 102 a may request registering one ormore of the multiple users with the system. The system may generate anaccount for the premises 102 a. As another example, the system may add anew user to an existing account of the premises 102 a. In some cases,the request may request removing a registered user from an account. Inresponse to such a request, the system may remove the registered userfrom the account.

The account may comprise a premises profile of the premises 102 a and arespective user profile of each of the one or more of the multipleusers. The profile of the premises 102 a may comprise one or more of anaddress of the premises 102 a, billing information of the premises 102a, information of devices associated with the premises 102 a (e.g., themodem 110, and the gateway 111, the display device 112, the set topbox/DVR 113, the personal computer 114, the laptop computer 115, thewireless device 116, the landline phone 117, etc.), or any otherinformation associated with the premises 102 a.

The user profile may comprise one or more of the user's viewing history(e.g., program information of the user's current program, the user'scurrent viewing progress point of the current program, programinformation of a corresponding program, the user's stop marker(s)associated with a stream of a corresponding program, the user's resumemarker(s) associated with a stream of a corresponding program, theuser's farthest viewing progress point of a corresponding program,device information of device(s) with which the user consumes acorresponding program, etc.); the user's personal information (e.g.,user's viewing preferences, user's habits); information of the user'smobile device (e.g., the user's username associated with the mobiledevice, the user's mobile phone number, the device identification of theuser's mobile device, etc.); information of the user's vehicle (e.g.,the vehicle identification, information of display devices installed onthe vehicle, information of audio systems installed on the vehicle,etc.); information of the user's selected display devices which thesystem may automatically activate when the user is within apredetermined distance from these devices (e.g., a television located inthe premises 102 a, a display device on a refrigerator located in thepremises 102 a, a display device integrated in the user's vehicle,etc.); or any other information associated with the user.

The program information of the user's current program may be informationof the program that the user is currently requesting and/or is currentlyconsuming. If the system determines that the user has stopped watching aprogram, the system may initialize the user's current program (e.g.,setting the user's current program as “not available”) until the usersends another program request and/or starts consuming a program. If theuser's current program is “not available,” the system may determine thatthe user is not currently consuming a program.

The user's current viewing progress point of the current program may bethe point, in the stream of the current program, the user is currentlyconsuming. The user's current viewing progress point may point to aframe, of the current program, which the user is currently viewing. Ifthe system determines that the user has stopped watching a program, thesystem may initialize the user's current viewing progress point of thecurrent program (e.g., setting the user's current viewing progress pointof the current program as “not available”) until the user startsconsuming a program. If the user's current viewing progress point of thecurrent program is “not available,” the system may determine that theuser is not currently consuming a program.

The program information of a program may comprise program information ofany program that the user has consumed. For example, the programinformation may comprise the title of a program that the user hasconsumed, the address of the program located in a database, etc.

The user's stop marker(s) may point to where, in a stream of acorresponding video program, the user has stopped watched the program.One user may have multiple stop markers associated with the stream ofone program if the user has stopped watching the program multiple times.

The farthest viewing progress point of a program may be the farthestviewing progress point that the user has consumed. The farthest viewingprogress point may be same as the farthest stop marker, among all thestop markers associated with the stream of the program.

The user's resume marker(s) may point to where, in a stream of acorresponding video program, the user resumes to watch the program. Forexample, multiple users may start watching a same program, and one ofthe multiple users leaves in the middle of the program while other userscontinue to watch the program. The one of the multiple users may returnand continue to watch the program. The resume marker points to where, inthe stream of the program, other users are watching at the time thereturning user returns to consume the program. The resume marker maypoint to the last I-frame that other users have consumed at the time theuser returns to consume the program. One user may be associated withmultiple resume markers if the user has resumed watching the programmultiple times.

The device information of device(s) with which the user consumes acorresponding program may comprise device identification(s) (e.g., adevice name, e.g., “TV 1,” “Mobile,” etc.; a MAC ID; a device serialnumber; or any unique information associated with a device) of thedevice(s) with which the user has used to consume the program. Forexample, the user may consume a program with one or more devices. Theuser may consume a part of the program (e.g., scene 1 of the program) ona laptop and may consume another part (e.g., scene 2 of the program) ofthe program on the user's smartphone or mobile device. The deviceinformation may comprise device information indicating a MAC ID of thelaptop and the corresponding part of the program (e.g., the scene 1 ofthe program) that the laptop has rendered, and information indicating aMAC ID of the user's mobile device and the corresponding part of theprogram (e.g., the scene 2 of the program) that the user's mobile devicehas rendered. The device information may comprise a corresponding timeperiod indicating when the device renders the corresponding part of theprogram.

A respective user account may be generated for each of the one or moreof the multiple users, and the user accounts may be associated with eachother. The user account may comprise a user profile of the correspondinguser.

The user profile may comprise, among other data, data indicating anexample viewing history shown in the following Table 1:

TABLE 1 Viewing History Program Info Current Movie TV Show 1 TV Show 2Movie 1 Current 80 mins N/A N/A N/A Progress Current TV1 N/A N/A N/ARendering Device Markers Stop 1: 30 min Stop 1: 60 min Stop 1: 180 minStop 1: 58 min Resume 1: 40 min Resume 1: 70 min Stop 2: 90 min Stop 2:100 min Farthest 90 min 100 min 180 min 58 min Past 0-30 min: TV1 0-60min: TV2 0-180 min: Mobile 0-58 min: TV2 Rendering 30-40 min: Mobile60-70 min: Mobile Device(s) 40-90 min: TV1 70-100 min: TV2

The second row of the Table 1 may indicate the program information ofprogram(s) that the user has watched. For example, the programinformation may include the program title—“Current Movie”—of the currentprogram that the user is watching, and the program titles of programsthat the user has watched—“TV Show 1,” “TV Show 2,” and “Movie 1.”

The third row of the Table 1 may indicate the user's current viewingprogress of the current program. For example, the user may be currentlywatching the Current Movie at 80-minutes of the Current Movie. Since theuser is not currently watching the TV Show 1, the TV Show 2, and theMovie 1, the third row value for the TV Show 1, the TV Show 2, and theMovie 1 is not available (N/A).

The fourth row of the Table 1 may indicate the device with which theuser is consuming the current program. For example, the user may becurrently watching the Current Movie on a first television named “TV1.”Since the user is not currently watching the TV Show 1, the TV Show 2,and the Movie 1, the fourth row value for the TV Show 1, the TV Show 2,and the Movie 1 is not available (N/A).

The fifth row of the Table 1 may indicate one or more stop markersand/or resume markers associated with each of the current program andprograms that the user has watched. For example, for the Current Movie,the user has stopped at 30-minutes of the Current Movie, resumed at40-minutes of the Current Movie, and stopped again at 90-minutes of theCurrent Movie. For the TV Show 1, the user has stopped at 60-minutes ofthe TV Show 1, resumed at 70-minutes of the TV Show 1, and stopped againat 100-minutes of the TV Show 1. For the TV Show 2, the user has watchedthe entire 180-minutes TV Show 2. For the Movie 1, the user has stoppedat 58-minutes of the Movie 1.

The sixth row of the Table 1 may indicate the user's farthest viewingprogress point of a corresponding program. For example, for the CurrentMovie, the farthest point the user has watched points to 90-minutes ofthe Current Movie. The farthest viewing progress point (90 minutes) ofthe Current Movie may be different from the current viewing progress (80minutes) of the Current Movie, because a returning user (another userdifferent from this user) may cause to rewind the Current Movie to anearlier point which this user has already watched (as shown in FIG. 3D).For the TV Show 1, the farthest point the user has watched may point to100-minutes of the TV Show 1. For the TV Show 2, the farthest point theuser has watched may point to 180-minutes of the TV Show 2. For theMovie 1, the farthest point the user has watched may point to 58-minutesof the Movie 1. In some cases, the farthest viewing progress point maybe omitted from the Table 1. In these cases, the system may determinethe farthest viewing progress point if the farthest viewing progresspoint is required to determine playback of the content item or otheractions associated with the content item. For example, the system maydetermine the farthest viewing progress point is equal to the stopmarker, of multiple stop markers (if the use has stopped watching theprogram for multiple times), that is farthest in the stream of theprogram.

The seventh row of the Table 1 may indicate the devices that haverendered a corresponding program. For example, for the Current Movie,the TV 1 previously displayed 0-30 minutes of the Current Movie, theuser's mobile device named “Mobile” previously displayed 30-40 minutesof the Current Movie, and the TV 1 previously displayed 40-90 minutes ofthe Current Movie. For the TV Show 1, a second television named “TV 2”previously displayed 0-60 minutes of the TV Show 1, the Mobilepreviously displayed 60-70 minutes of the TV Show 1, and the TV 2previously displayed 70-100 minutes of the TV Show 1. For the TV Show 2,the Mobile previously displayed the entire TV Show 2. For the Movie 1,the TV2 previously displayed 0-58 minutes of the Movie 1.

The values in the above Table 1 may be any values. Even not shown in theabove Table 1, the viewing history may include any other informationthat is related to the user's viewing history. Data indicating the Table1 may be stored in a database accessible by the system.

If no request to register a user is received, the method may proceed tostep 506. At step 506, a determination may be made as to whether any ofthe registered users wants to consume a program on a device. Forexample, a registered user may sit in front of a display device locatedin the premises 102 a and select a program to watch (e.g., tuning achannel, selecting an item from a program schedule or listing,requesting a streaming session, etc.). The user may send, via a userinterface displayed on a screen of the display device, a program requestfor the program to watch. The system may receive the program request.The program request may indicate one or more of the user's selection ofthe program among a plurality of programs, or the user's acceptance of arecommendation of continuing to watch the program that the user has beenpreviously watching.

As previously discussed, the display device may comprise a facialrecognition system. The facial recognition system may identify the user.After the facial recognition system identifies the user, the facialrecognition system may determine that the user is present in front ofthe display device. The facial recognition system may send dataindicating presence of the user to the content delivery system via thewired or wireless connections. Based on the received program request andthe received presence data, it may be determined that the user wants towatch the requested program on the display device.

It may be determined that a registered user wants to watch a program onthe user's mobile device. For example, the user may unlock the user'smobile device with fingerprint authorization. The user's mobile devicemay determine that the user is present and may send presence dataindicating that the user is present. The user may send a programrequest, via a video application installed on the user's mobile device,to request a program to watch. Based on the received presence data andthe program request, the system may determine that a registered userwants to watch a program on the user's mobile device.

It may be determined that a registered user wants to listen to audiocontent of a program in the user's vehicle. For example, the user mayenter the user's vehicle via fingerprint authorization, and may sit onthe driver seat. The user's mobile device may determine that the userenters the vehicle and is a driver, and may send presence dataindicating that the user enters the vehicle and is a driver. The usermay turn on an audio system installed on the vehicle. The user may senda program request, via a user interface associated with the audiosystem, to request a program to listen to. Based on the receivedpresence data and the program request, the system may determine that aregistered user wants to listen to audio content of a program in theuser's vehicle.

It may be determined that multiple registered users want to consume asame program on a same device (e.g., in a group viewing session). Forexample, the system may receive a program request via a user interfaceof a device (e.g., a display device), and may also receive presence dataindicating presence of multiple registered users in front of the displaydevice. Based on the received program request and the presence data, thesystem may determine that multiple registered users want to consume asame program on a same display device.

It may be determined that multiple registered users want to consume asame program on multiple different devices (e.g., in different remotelocations), respectively (e.g., in a group viewing session). Forexample, the system may receive presence data indicating that oneregistered user is present in front of a display device and may receivea program request, via a user interface of the display device, for avideo program. At the same time or within a predetermined time threshold(e.g., within 10 seconds), the system may receive presence dataindicating that another registered user is present in front of theanother registered user's mobile device and may receive a programrequest, via a user interface of the another registered user's mobiledevice, for the same video program. It may be determined that the oneregistered user and the another registered user want to consume a sameprogram on different devices, respectively.

If the system does not receive a program request and/or presence dataindicating presence of a registered user, it may be determined that noneof the registered users wants to consume a program, the process returnsto step 502.

If it is determined that one or more registered users want to consume aprogram, the process proceeds to step 508. At the step 508, the systemmay identify what program one or more registered users want to consume.For example, the program request may comprise data indicating programinformation (e.g., the program title, the address of program located ina database, etc.) that the user wants to consume. Based on the programinformation, the system may locate and retrieve requested program,encrypt the program, and to initiate delivery (e.g., streaming ordownloading) of the program to one or more registered users requestingthe program.

At step 510, the system may update the user profile, for each of theidentified users who are currently watching, by, e.g., updating valuesin the Table 1, to indicate the current program being watched, whichusers are watching, and update their progress in the current program.

New entries may be added if the current program has not previously beenviewed. The system may compare the program information of the user'scurrent program (the program currently being viewed) to the programinformation, and may determine whether the current program matches anyof the programs that the user has consumed. If a match is notdetermined, the system may determine that the current program has notbeen previously consumed by the user and the system may update theprogram information by adding the program information of the currentprogram. Alternatively, if a match is determined, the system maydetermine that the user has previously consumed at least a part of therequested program, and a new entry need not be added.

Device information of device(s) with which the user consumes the currentprogram may be updated. The system may exchange data signals with thedisplay device and obtain an identifier of the display device (e.g.,“TV1”, “smartphone”, etc.). The user profile (e.g., the “CurrentRendering Device” field in Table 1) may be updated to indicate deviceinformation of the display device.

The system may update, for each of the current viewers, the user'sprogress associated with the current program. The current progress,farthest progress, stop/resume markers, and past rendering devicesindicated in Table 1 may all be updated as needed. The profile may alsobe updated to indicate the various users in the current viewing session.

The system may cause the device (on which the user wants to consume therequested program) to display a user interface if needed to complete theupdating process. The user may update the user profile (e.g., the useruser's personal information, information of the user's mobile device,information of the user's vehicle, information of the user's selecteddisplay devices which the system may automatically activate if the“Follow Me” option is chosen, and any other information associated withthe user) via the user interface. The user may update the user profileby inputting data via the user's interface. The system may update theuser profile based on the user input.

At step 512, the system may determine whether any of the users is areturning user. A returning user may be a newly-detected user (e.g., auser who was newly-detected in step 506) who is returning from a shortbreak (e.g., returning from a restroom break). To detect a returninguser, a list of users identified in step 506 may be compared with aprevious list of users identified in an earlier instance of step 506(e.g., as the process continues to loop, step 506 will be revisited andrepeated). If there is at least one new user who was not previouslydetected, and if there is also at least one other user who has remainedwatching the program (e.g., was detected in both the previous iterationof step 506 and the current iteration of step 506), then it may bedetermined that the new user is a potential returning user. However,before concluding that the new user is a returning user, the profile forthe new user may be examined to determine if the new user's profilecomprises a recent stop marker for the current program. The system maycompare the new user's last stop marker (e.g., the most recent stopmarker that the system generated for the new user) with the currentviewing progress point of the current program being watched, and if thenew user's stop marker is within a predetermined range of the currentviewing progress point (e.g., if the stop marker was within the last tenminutes, twenty minutes, etc.), then the new user may be determined tobe a returning user who is returning from a short break.

If it is determined that there is a returning user, the process mayproceed to steps 514-536, which may provide one or more options for thereturning user to catch up with the other users who are in the currentviewing session. For example, as previously discussed in FIGS. 3A-3F,the system may provide one or more catch-up options for a returning user(e.g., the User C) to choose to catch up with other users (e.g., theUser A and the User B) who are also consuming the same program as theUser C.

At step 514, the system may retrieve the user profile of the returninguser. For example, the system may determine, based on the profile,device information of a device (e.g., a display device) with which thereturning user wants to consume the requested program. The system mayalso retrieve the returning user's last stop marker (e.g., the mostrecent stop marker that the system generated for the user) and thereturning user's last resume marker (e.g., the most recent resume markerthat the system generates for the user). The returning user's progressmay be compared with the current program progress (and/or with theprogress indicated by the profiles of other users in the current viewingsession), and one or more missed scenes (scenes between the currentprogress and the returning user's farthest progress). The system maycause the display device to display an option to show what the returninguser has missed (e.g., the gap between the returning user's last stopmarker and the returning user's last resume marker). For example, thedisplay device may display a “what did I miss” button on the screen ofthe display device. If the returning user presses the “what did I miss”button, the display device may display information of the gap betweenthe returning user's most recent stop marker and the returning user'smost recent resume marker. The information of the gap may comprise oneor more of a time length of the gap (e.g., “You missed 30 minutes of theshow!”), a content summary of the gap (e.g., “You missed theintroduction of a solar system”), etc. If the returning user usesanother device (e.g., the user's mobile device) to consume the program,the system may cause that other device to display this “what did I miss”option.

At step 516, based on the retrieved user profile, the system may promptfor catch-up options for the returning user to select to catch up withanother present user who is also consuming the same program. Forexample, as shown in FIG. 3C, the system may cause the User C's mobiledevice 310 to display catch-up options for the User C to select. In somecases, the system may cause the display device to overlay these catch-upoptions on the scenes displayed on the screen of the display device, andthe selection may be made by any of the other users in the room (e.g.,User A, User B, etc.).

The User C may select one of the catch-up options. In some cases, a usermay be assigned a unique button on a remote control of a display device.The unique button may be associated with the user's viewing preferences,and may automatically cause a predetermined catch-up option to beperformed for the returning User C. For example, the User C's viewingpreferences may indicate that the User C prefers to select option (1) asshown in FIG. 3C and that the User C's preferred rewinding speed is 5×.If the returning User C presses the unique button assigned to thereturning User C, the system may execute option (1) with rewinding speedof 5×. Different users may be assigned with different buttons on theremote control of the display device, respectively.

At step 518, a determination may be made as to whether the returninguser selected a rewind catch-up option to rewind the program to thereturning user's stop marker. This may occur if, for example, Users Aand B agree to rewatch portions of the program that User C missed, toallow User C to catch up.

If the system receives user input indicating that the returning user hasselected the rewind catch-up option, the process may proceed to step520. At step 520, the system may rewind the program on the display tothe last stop marker of the returning user. For example, as shown inFIG. 3D, the system may cause the display device to rewind the videoprogram to the beginning of scene 2 (e.g., the last stop marker for theUser C), and the display device may start to display the video programfrom the beginning of the scene 2.

If users watch a same program on different devices respectively (e.g.,the User A watches the video program on the User A's mobile device, theUser B watches the video program on the User B's mobile device, and theUser C watches the video program on the display device), the system maycause one or more of the User A's mobile device and the User B's mobiledevice to rewind the program to the User C's last stop marker. In thismanner, the multiple users may still enjoy a synchronized group viewingexperience via their different devices.

The stop marker of the returning user may point to the middle of anadvertisement inserted in the program. In these cases, the system mayadjust the stop marker to point to the end of the advertisement. Thesystem may rewind the program to the end of the advertisement, and thereturning user may skip the advertisement while the returning userwatches the missed part of the program. Alternatively, the system mayadjust the stop marker to point to a beginning of the advertisement, orto an alternative advertisement, to ensure that the returning user stillviews an advertisement after they return.

At step 522, the system may update the user profiles for the users inthe current viewing session, e.g., updating the user's current viewingprogress point of the program, the farthest viewing progress point ofthe program, etc., to reflect the fact that the program has beenrewound. For example, as shown on FIG. 3D, the system causes the displaydevice to rewind the video program to the last stop marker (e.g., thebeginning of the scene 2) of the returning user (e.g., the User C), andthe current viewing progress points of the current program of all theusers may be updated and return to the beginning of the scene 2. As theprogram goes on, the current viewing progress points of all the usersmay be continuously updated and point to the frame that the users arecurrently watching, so that the user's viewing progress may becontinuously tracked and kept up-to-date in the profile.

At step 524, a determination may be made as to whether the returninguser selected a synopsis catch-up option to display a synopsis of whatthe returning user missed. If the returning user selects the synopsiscatch-up option, the process may proceed to step 526.

At step 526, the system may cause the device (e.g., the display device)on which users (e.g., the returning user and other users) are consumingthe program to split the display screen and to use one part of thedisplay to present a synopsis of what the returning user missed. Forexample, as shown on FIG. 3E, if the User C (e.g., the returning user)selects the synopsis catch-up option, the system may cause the displaydevice 300 to split the screen of the display device 300 into asub-screen (1) 330 and a sub-screen (2) 340. The display device maydisplay the scene 3 on the sub-screen (1) 330, and display a synopsis ofthe scene 2 or highlighted parts of the scene 2 on the sub-screen (2)340. In some cases, the system may need not cause the display device 300to split the display screen, but may continue to display the scene 3(which other users are watching) on the entire screen of the displaydevice and overlay the synopsis of the scene 2 over the scene 3. Thereturning user may then review the synopsis and understand what he/shemissed, while also continuing to watch the current program progress withthe other users.

At step 528, similar to step 522, the system may update the userprofiles, e.g., the user's current viewing progress point of theprogram, the farthest viewing progress point of the program, etc.

At step 530, a determination may be made as to whether the returninguser selected a forwarding catch-up option to send what the returninguser has missed to another device associated with the returning user fordisplay.

If it is determined that the returning user selects the forwardingcatch-up option, the system may proceed to step 532 in which the systemmay send, to another device associated with the returning user, theprogram portion(s) that the returning user has missed. For example, asshown on FIG. 3F, the system may send the scene 2 (what the returningUser C missed during the User C's absence) to the User C's mobile device310 (e.g., a device different from the display device with which theUser A and the User B are consuming the program). The system may sendthe scene 2 of the program to the User C's mobile device 310 fordisplay. The returning user may select any device associated with thepremises 102 a, and the system may send what the returning user hasmissed to the selected device for display. The returning user may thencatch up to the others in the room by watching the missed portion ontheir own device while also watching the current portion on the maindisplay.

At step 534, similar to steps 522 and 528, the system may update theuser profiles, e.g., the user's current viewing progress point of theprogram, the farthest viewing progress point of the program, etc. Thesystem may also update the user's device information of device(s) withwhich the user consumes a corresponding program by adding the anotherdevice to which the system forwards what the user has missed.

If it is determined that the returning user does not select any of thecatch-up options discussed above, the system may determine that thereturning user does not wish to view what the returning user has missedduring the returning user's absence. The process may proceed to step536. At step 536, similar to steps 522, 528, and 534, the system mayupdate the user profiles, e.g., the user's current viewing progresspoint of the program, the farthest viewing progress point of theprogram, etc. The returning user's profile may still indicate the missedportions (e.g., via the resume and stop markers), so if the returninguser wishes to review the missed portions at some later time, the usermay do so by simply requesting to view the missed portions. The systemmay automatically retrieve the missed portions and present them to theuser.

At step 538, the system may determine whether there are any missingusers. A missing user may be a user who started watching a programtogether with other user, but is no longer consuming the program (e.g.,a user who has stepped away to take a break, and is determined to nolonger be among the group that is currently watching, wherein the userpreviously was among that group). A missing user may be one who justrecently left the room, or a user who is not present when another userdecides to resume watching a show that the users were previouslywatching together. If the system determines that one of the users, whopreviously was watching the program, is not consuming the program and/oris not present in front of any devices associated with the premises 102a and any devices associated with the one of the multiple users, thesystem may determine that there is a missing user in viewing theprogram. A departure point may also be determined for the missinguser—the departure point may indicate the user's last viewed portion ofthe program, such as a latest stop point or farthest point in Table 1above.

If it is determined that there is a missing user, the process mayproceed to steps 539-552 where the system may track the viewing progress(or lack thereof) of the missing user and one or more other users whoare present and viewing the program, and may provide alerts and optionsto help the users remain synchronized in their viewing.

At step 539, a “Follow Me” function may be implemented if such afunction has been selected by the missing user. The system may determinethat the user has activated the “Follow Me” function. With the “FollowMe” function being activated, the user may continuously watch theprogram if the user switches to another device without manuallyactivating another device. For example, the user may start watching aprogram on a display device in Room 1 for 30 minutes. The user may thenmove to Room 2 where a refrigerator integrated with a display device islocated, and the display device integrated to the refrigerator is in asleep mode. The system may receive presence data, from the displaydevice integrated to the refrigerator, indicating that the user ispresent in front of the display device integrated to the refrigerator.Based on the presence data, the system may determine, even withoutreceiving a program request from the display device integrated to therefrigerator, that the user wants to continue to consume the programwith the display device integrated to the refrigerator. The system maysend wake-up signals to the display device integrated to therefrigerator and activate the display device integrated to therefrigerator. The system may send the program, from where the user justleft, to the display device integrated to the refrigerator for display.After being activated, the “Follow Me” option may remain active untilthe user's farthest viewing progress point reaches the end of theprogram.

At step 540, the system may compare the current viewing progress pointof a present user with the farthest viewing progress point of themissing user, to determine whether the present user is about to pass thefarthest viewing progress point of the missing user.

If this is not the case—e.g., if it is determined that the farthestviewing progress point of the present user is behind (e.g., notapproaching, or not equaling, or not passing) the farthest viewingprogress point of the missing user, the system may proceed to step 542in which the system may provide a “Catch Up” option for the present userto catch up with the missing user. As shown in FIG. 4C, the system maycompare the farthest viewing progress point (e.g., the end of the scene1) of the User A (e.g., the present user) and the farthest viewingprogress point (e.g., the end of the scene 3) of the User B (e.g., themissing user), and may determine that the User A is 2 scenes (e.g., thescene 2 and the scene 3) behind the User B. The system may cause thedisplay device to display an indication that the User A is 2 scenesbehind the User B. The system may case the display device to list thescene 2 and the scene 3 to show what the User A needs to view to catchup with the User B. The system may cause the display device to show a“Catch Up” button. If the User A clicks on the “Catch-Up” button, thesystem may cause the display device to display the video program fromthe beginning of the scene 2 to the end of the scene 3. If the User Achooses to continue to watch the video program on the User A's mobiledevice (instead of the display device 300), the system may cause theUser A's mobile device (instead of the device 300) to display theindication that the User A is two scenes behind the user B and the“Catch Up” button. Accordingly, the system may send data representingthe scene 2 and the scene 3 to the User A's mobile device for display.

The process may proceed to step 544 where the system may update the userprofile to indicate the user's progress in viewing the program, e.g.,the user's current viewing progress point of the program, the portionsthat the user watched, the portions that the user skipped, etc.

If, in step 540, it is determined that the current viewing progresspoint of the present user(s) is about to pass the farthest viewingprogress point of the missing user, the system may proceed to step 546.This may occur, for example, if a user (a “present” user currentlywatching a program) decides to resume watching a program that the userpreviously started watching with one or more other users who are notcurrently present. At step 546, the system may display a warningindicating that the that current viewing progress point of the presentuser is about to pass the farthest viewing progress point of the missinguser. For example, as shown in FIG. 4E, if the system determines thatthe current viewing progress point (e.g., the end of the scene 3) of theUser A (e.g., the present user) is about to pass the farthest viewingprogress point (e.g., the end of the scene 3) of the User B (e.g., themissing user), the system may cause the display device to display awarning. The system may cause the device that the present user is usingto consume the program to display the warning. As such, the system maysynchronize the viewing progresses of multiple users and avoid spoilers.

The process may proceed to step 548 where the system determines whetherthe system receives user input indicating that the present user choosesto stop at the farthest viewing progress point of the missing user.

If the present user chooses to stop at the farthest viewing progresspoint of the missing user, the process may proceed to step 550. At step550, the system may cause the display device to stop displaying theprogram, and may update the user profile for the present user(s). Thesystem may also send a message (e.g., text message, email, etc.) to themissing user(s), alerting them that their friends have stopped theirviewing progress, as this may facilitate resuming a group viewingexperience. As shown on FIG. 4E, the system may add a stop marker (e.g.,A2) for the User A to indicate that the User A stops consuming theprogram at A2. The message may indicate the present user, the programtitle, the stop point of the present user, the difference between thestop point of the present user (e.g., the progress of the present user)and the progress of the message recipient, and may provide options for afurther group viewing session. In some cases, the message may comprise afuture viewing date/time, proposed by the present user, for the viewinggroup (e.g., including the missing user(s) and the present user(s)) toresume watching the program together, and options (e.g., one or more ofoptions of “Agree,” “Disagree,” and “Proceed without me”) for themessage recipient to select. If the missing user chooses the “Agree”option, the system may save the future viewing date/time and send out areminder, prior to the future viewing date/time, to each of the users inthe viewing group to remind them to resume watching the program on thefuture viewing date/time. If the missing user chooses the “Disagree”option, the system may send the missing user a message asking themissing user to propose a different future viewing date/time, andforward the different future viewing date/time to the present user.After the viewing group agrees to a future viewing date/time, the systemmay save the future viewing date/time and send out a reminder, prior tothe future viewing date/time, to each of the users in the viewing groupto remind them to resume watching the program on the future viewingdate/time. If the missing user chooses the “Proceed without me” option,the system may send a message to the present user to inform the presentuser that he may resume watching the program anytime he prefers.

In some other cases, after it is determined that the present user haschosen to stop at the farthest viewing progress point of the missinguser, the system may present a shared screen to each of the users in theviewing group to select a future viewing date/time so that the viewinggroup can resume watching the program together on the selected futureviewing date/time. The shared screen may comprise an interactive userinterface. A user of the viewing group may propose a future viewingdate/time via the interactive user interface, and the system may sendother users in the viewing group the proposed future viewing date/timeand options (e.g., one or more of “Agree,” “Disagree,” and “Proceedwithout me”) for the other users to select. The options of “Agree,”“Disagree,” and “Proceed without me” here may be similar to the optionsof “Agree,” “Disagree,” and “Proceed without me” discussed above. Viathe shared screen, the viewing group may agree to a future viewingdate/time to resume watching the program together. Accordingly, thesystem may facilitate the viewing group getting together again to resumewatching.

If the present user chooses not to stop at the farthest viewing progresspoint of the missing user, the process proceeds to step 552. At step552, the system may update the present user's current viewing progresspoint of the program, the farthest viewing progress point of theprogram, and the other progress data discussed above.

At step 554, the system may determine if a user falls asleep when theuser is watching a program. If the user falls asleep, an eye trackingsystem may determine that the user has closed the eyes for more than athreshold time period (e.g., 30 seconds). For example, if the eyetracking system determines that the user's eyes have been closed formore than 30 seconds, the display device may determine that the user hasfallen asleep and has stopped watching the program.

If the eye tracking system determines that the user has fallen asleep,the process may proceed to step 556. At step 556, the eye trackingsystem may send, to the system, data indicating that the user's eyeshave been closed for more than the threshold time period (or simply datato cause the system to stop displaying the program). Based on thereceived data, the system may cause the display device that isdisplaying the program to stop displaying the program.

At step 558, the user profile may be updated. For example, the systemmay add a stop marker for the user. The stop marker may indicate thelast scene (or frame, or time point, etc.) that the sleeping userwatched. This stop marker may, for example, indicate a point in theprogram that is 30 seconds prior to the time the determination was madein step 554.

The system may continuously determine if there is a returning user(another user different from the user who has fallen asleep) when theuser is in sleep. If the system determines that there is a returninguser, the process may return to step 512.

At step 560, the eye tracking system may determine if the user wakes up(e.g., reopens his or her eyes). If the eye tracking system determinesthat the user reopens their eyes, the process may proceed to step 562.At step 562, the eye tracking system may send data causing the system toresume display of the program. The system may cause the display deviceto resume display of the program from the stop marker at which the userfell asleep.

At step 564, the user profile may be updated. For example, the systemmay update the user's progress (e.g., the resume marker, the currentviewing progress point of the program, the farthest viewing progresspoint of the program, etc.). At step 566, the system may continue tocause display of the program on the device in front of which the user ispresent, and may determine whether the current viewing progress point ofthe user reaches the end of the program. If the current viewing progresspoint of the user reaches the end of the program, the process mayproceed to step 568 in which the system may update the user's progress(e.g., current viewing progress point of the program, the farthestviewing progress point of the program, etc.). Separate progressinformation may be maintained for different programs, so reaching theend of one program may cause the system to create a new progress bar forwhatever the next program is. If the current viewing progress point ofthe user does not reach the end of the program, the process may returnto step 502 where the system continuously recognizes registered users.

The system may use the profile information to assist in managing storageof recorded programs. For example, if a user selects to delete arecorded program, but another user has not watched the program yet (orhas only watched part of it), then the system may prevent the deletionof the recording (or at least provide a warning prior to deletion). Thesystem may determine whether all the users have consumed the entireprogram. If not all the users have consumed the entire program, thesystem may prevent the recording of the program from being deleted fromthe device(s) with which one or more of the users have used to consumethe program. For example, in the example of FIGS. 4A-4F, before the UserA and the user B have viewed the entire video program, if one of theusers sends a delete request to the system to delete the recording ofthe program from the display device, the system may deny the deletionrequest. After the system receives the delete request, the system mayretrieve the farthest viewing progress point of the User A and thefarthest viewing progress point of the User B. If the system determinesthat not both of the users' farthest viewing progress points of theprogram reach the end of the program, the system may deny the deletionrequest and prevent the program from being deleted.

Although examples are described above, features and/or steps of thoseexamples may be combined, divided, omitted, rearranged, revised, and/oraugmented in any desired manner. Various alterations, modifications, andimprovements will readily occur to those skilled in the art. Suchalterations, modifications, and improvements are intended to be part ofthis description, though not expressly stated herein, and are intendedto be within the spirit and scope of the disclosure. Accordingly, theforegoing description is by way of example only, and is not limiting.For example, the step 538 may occur prior to step 512.

1. A method comprising: determining, by a computing device, a pluralityof users associated with a group viewing a content item; afterdetermining that a first user, of the plurality of users, has left thegroup, capturing information indicating a departure point, in thecontent item, associated with the first user leaving the group;monitoring viewing progress, of the content item, of one or moreremaining users of the plurality of users; and after determining thatthe first user has returned to the group viewing the content item,sending, to a second computing device associated with the first user, anoption to view a portion of the content item corresponding to adifference between the viewing progress of the one or more remainingusers of the plurality of users and the departure point.
 2. The methodof claim 1 further comprising: presenting, after determining that thefirst user has returned to the group viewing the content item, aplurality of options to allow the first user to catch up with theviewing progress of the one or more remaining users.
 3. The method ofclaim 1 further comprising: determining how to execute a trick playoption based on a user profile associated with the first user.
 4. Themethod of claim 1 further comprising: presenting, after determining thatthe first user has returned to the group viewing the content item, anoption to rewind the content item to the departure point.
 5. The methodof claim 1 further comprising: outputting an indication that a viewingprogress of the first user is approaching a viewing progress of a seconduser of the plurality of users.
 6. The method of claim 1, whereinadvertisements shown when the portion of the content item is shown tothe first user are different from advertisements shown when the portionwas shown to the one or more remaining users of the plurality of users.7. The method of claim 1 further comprising: providing, afterdetermining that the first user has returned to the group viewing thecontent item, an option to the first user to resume from the departurepoint.
 8. A method comprising: determining, by a computing device, aplurality of users associated with a group viewing a content item; afterdetermining that a first user, of the plurality of users, has left thegroup, capturing information indicating a departure point for the firstuser, in the content item, associated with the first user leaving thegroup viewing the content item; monitoring viewing progress, of thecontent item, of one or more remaining users of the plurality of users;after determining that a second user, of the plurality of users, hasleft the group viewing the content item subsequent to the first userleaving, capturing information indicating a departure point for thesecond user, in the content item, associated with the second userleaving the group viewing the content item; after determining that thefirst user has returned to the group viewing the content item, sendingto a viewing device associated with the first user, an option to view aportion of the content item corresponding to a difference between theviewing progress of the one or more remaining users of the plurality ofusers and the departure point for the first user; and outputting anindication that a viewing progress of the first user is approaching thedeparture point for the second user.
 9. The method of claim 8, whereinthe output indication provides options to continue viewing the contentitem and to stop the content item at the departure point for the seconduser.
 10. The method of claim 8, wherein the portion of the content itemcorresponding to the difference between the viewing progress of the oneor more remaining users of the plurality of users and the departurepoint of the first user omits advertisements.
 11. The method of claim 8,further comprising: outputting, after determining that the first userhas returned to the group viewing the content item, a plurality ofoptions to allow the first user to catch up with the viewing progress ofthe one or more remaining users.
 12. The method of claim 8, furthercomprising: determining how to execute a trick play option based on auser profile associated with the first user.
 13. The method of claim 8,further comprising: outputting, after determining that the first userhas returned to the group viewing the content item, an option to rewindthe content item to the departure point for the first user.
 14. Themethod of claim 8, further comprising: outputting an indication that aviewing progress of the first user is approaching a viewing progress ofthe second user of the plurality of users.
 15. The method of claim 8,wherein advertisements, shown when the portion of the content itemcorresponding to the difference between the viewing progress of the oneor more remaining users of the plurality of users and the departurepoint of the first user is shown, are different from advertisementsshown during a corresponding portion of the content item shown to theone or more remaining users of the plurality of users.
 16. The method ofclaim 8, further comprising: providing, after determining that the firstuser has returned to the group viewing the content item, an option tothe first user to resume from the departure point for the first user.17. A method comprising: determining that a first user, of a pluralityof users viewing a content item, has stopped viewing the content item ona first device; comparing a content progress of one or more remainingusers, of the plurality of users, with a content progress of the firstuser; receiving information indicating that the first user is locatednear a second device, different from the first device; and causingoutput, by the second device and based on the comparing, an option tosynchronize the content progress of the first user with the contentprogress of the one or more remaining users.
 18. The method of claim 17,wherein the content item comprises an audio component and a visualcomponent, the method further comprising: outputting, by the seconddevice and based on a determination of output capabilities of the seconddevice, the audio component of the content item without the visualcomponent of the content item.
 19. The method of claim 17, wherein thecausing output of the option to synchronize the content progress of thefirst user with the content progress of the one or more remaining userscomprises causing output of an option to output a portion of the contentitem by a vehicle associated with the first user, and is based on thefirst user entering the vehicle.
 20. The method of claim 17, wherein thecontent item comprises a visual component and an audio component, themethod further comprising: outputting, by the second device and based onlocation information, associated with the first user and relative to thesecond device, the audio component of the content item without thevisual component of the content item.